import java.util.*;

class Program {
  public static int[] twoNumberSum(int[] array, int targetSum) {
    int n = array.length;
    /*for(int idx1 = 0; idx1 < n; idx1++) {
      for(int idx2 = idx1 + 1; idx2 < n; idx2++) {
        if(array[idx1] + array[idx2] == targetSum) {
          return new int[] {array[idx1], array[idx2]};
        }
      }
    }*/

    /*Arrays.sort(array);
    int left = 0, right = n - 1;

    while(left < right) {
      int leftValue = array[left];
      int rightValue = array[right];
      int sum = leftValue + rightValue;

      if(sum == targetSum) {
        return new int[] {leftValue, rightValue};
      } else if(sum < targetSum) {
        left++;
      } else {
        right--;
      }

    }*/

    Set<Integer> seen = new HashSet<>();

    for(int num : array) {
      int difference = targetSum - num;
      if(seen.contains(difference)) {
        return new int[] {num, difference};
      }
      seen.add(num);
    }




    return new int[0];
  }
}
